# Someone will thank me later for this.
# Find and replace DEP_NAME with the name of your dependency.

DEP_DEP_NAME_BUILD_DIR := $(FBARDUINO_FIRMWARE_LIB_BUILD_DIR)/DEP_NAME
DEP_DEP_NAME := $(DEP_DEP_NAME_BUILD_DIR)/DEP_NAME.a
DEP_DEP_NAME_SRC_DIR := $(ARDUINO_INSTALL_DIR)/libraries/DEP_NAME/src

DEP_DEP_NAME_CFLAGS := \
	-I$(DEP_DEP_NAME_SRC_DIR)

DEP_DEP_NAME_CFLAGS := -I$(DEP_DEP_NAME_SRC_DIR)
DEP_DEP_NAME_LDFLAGS := $(DEP_DEP_NAME_BUILD_DIR)/DEP_NAME.a -L$(DEP_DEP_NAME_BUILD_DIR) -lm

DEP_DEP_NAME_ASM_SRC := $(call rwildcard, $(DEP_DEP_NAME_SRC_DIR), *.S)
DEP_DEP_NAME_ASM_OBJ := $(DEP_DEP_NAME_ASM_SRC:.S=.o)

DEP_DEP_NAME_C_SRC   := $(call rwildcard, $(DEP_DEP_NAME_SRC_DIR), *.c)
DEP_DEP_NAME_C_OBJ   := $(DEP_DEP_NAME_C_SRC:.c=.o)

DEP_DEP_NAME_CXX_SRC := $(call rwildcard, $(DEP_DEP_NAME_SRC_DIR), *.cpp)
DEP_DEP_NAME_CXX_OBJ := $(DEP_DEP_NAME_CXX_SRC:.cpp=.o)

DEP_DEP_NAME_ALL_OBJ := $(DEP_DEP_NAME_ASM_OBJ) $(DEP_DEP_NAME_C_SRC) $(DEP_DEP_NAME_CXX_OBJ)

DEP_DEP_NAME_SRC := $(DEP_SERVO_ASM_SRC) $(DEP_SERVO_C_SRC) $(CXX_SRC)
DEP_DEP_NAME_OBJ := $(patsubst $(DEP_DEP_NAME_SRC_DIR)/%,$(DEP_DEP_NAME_BUILD_DIR)/%,$(DEP_DEP_NAME_ALL_OBJ))

DEP_DEP_NAME_DIRS := $(sort $(dir $(DEP_DEP_NAME_OBJ)))

ARDUINO_DEP_DEP_NAME_CXX_FLAGS_P := $(DEP_CORE_CXX_FLAGS_P) $(DEP_DEP_NAME_CFLAGS)

$(DEP_DEP_NAME): $(DEP_CORE) $(DEP_DEP_NAME_BUILD_DIR) $(DEP_DEP_NAME_OBJ)
	$(AR) rcs $(DEP_DEP_NAME) $(DEP_DEP_NAME_OBJ)

$(DEP_DEP_NAME_BUILD_DIR)/%.o: $(DEP_DEP_NAME_SRC_DIR)/%.cpp
	$(CXX) $(ARDUINO_DEP_DEP_NAME_CXX_FLAGS_P) $< -o $@

$(DEP_DEP_NAME_BUILD_DIR):
	$(MKDIR_P) $(DEP_DEP_NAME_DIRS)

dep_DEP_NAME: $(DEP_DEP_NAME)

dep_DEP_NAME_clean:
	$(RM) $(DEP_DEP_NAME_OBJ)
	$(RM) $(DEP_DEP_NAME)
